#ifndef __UTIL__
#define __UTIL__

#include <iostream>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>

#include "log_level.hpp"

/* 一些项目小插件
  1.检查文件或者目录是否存在
  2.创建目录
  3.返回时间戳
  */
namespace log_p
{
    namespace UTIL
    {
        class TIME
        {
        public:
            static time_t GetTime()
            {
                return time(nullptr);
            }
        };

        class file
        {
        public:
            static bool FileIsExit(const std::string &f_name)
            {
                // access是Linux的接口，意味着跨平台性不好，可以使用stat
                struct stat st;
                if (stat(f_name.c_str(), &st) == 0)
                    return true;
                return false;
            }

            static std::string GetPath(const std::string &path)
            {
                int pos = 0;
                // 兼容两个平台
                pos = path.find_last_of("/\\", path.size() - 1);
                if (pos != path.npos)
                {
                    return path.substr(0, pos + 1);
                }
                return "";
            }

            static bool CreateDirctory(const std::string &path)
            {
                int pos = 0, cur = 0;
                while (cur < path.size())
                {
                    cur = path.find_first_of("/\\", pos);
                    std::string parent = path.substr(0, cur);
                    pos = cur + 1;
                    // std::cout << parent << std::endl;
                    if (parent.compare(".") == 0 || parent.compare("..") == 0)
                        continue;

                    // 1.没有/了，最后一个名
                    if (FileIsExit(parent))
                        continue;
                    mkdir(parent.c_str(), 0777); // 默认全打开
                }
                return true;
            }
        };
    }

}

#endif
